In the field of software testing, different software testing methodologies/(test case execution channels) are used. These test case execution channels may include manual testing, automation testing, semi-automated testing, crowdsource testing, Artificial Intelligence based testing and alike. However, none of the software testing methodology is perfect. Each software testing methodology has some advantages and disadvantages.
In the software industry, manual testing is mostly used for testing but the manual testing process is labor intensive, slow time to execute, difficult to scale, error prone, requires high management overhead, costly, and low fragility. Furthermore, automation testing appears as a cure to all the ills of manual testing. Automation testing on the other hand is characterized by more expensive talent (developers not QA), higher upfront costs, fast time to execute, high fragility (tendency of the tests to fail with minimal change). Many companies have tried to achieve 80 to 90% automation, which is very difficult to create and almost impossible to maintain. Furthermore, AI based testing is largely dependent on the robustness of the set of software testing examples used for training the bot used in AI based testing. The process of training the bot, for software testing, requires extensive effort. If the bot is not trained appropriately, the bot's efficacy is poor and leads to frequent false positives or false negatives test results. The latest innovation is crowdsource testing that has external low cost low quality talent doing the tests. As these are not trained QA professionals, far more documentation is needed. Hence, each of the software testing methodology available in the art have some advantages and disadvantages. In such a situation, it is very difficult to determine, which software testing methodology should be used for a particular software application in order to perform the software testing in a better and efficient manner.
To address the above issues, a combination of test execution methodologies may be used. However, it must be noted that each testing methodology is different and requires a completely different set of test cases to test the same functionality of an application using different test execution methodologies. As a result, for testing features associated with a software application using multiple testing methodologies, a test case corresponding to each testing methodology needs to be designed. Currently there are no means by which, a single test case definition can be used across multiple testing methodologies.